package com.sunrise.xdoc.view.contact;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import com.sunrise.xdoc.entity.contact.LoaiNhanVien;
import com.sunrise.xdoc.entity.contact.NhanVien;
import com.sunrise.xdoc.event.EventData;
import com.sunrise.xdoc.event.ListenerMethod;
import com.sunrise.xdoc.view.AbstractView;

@ManagedBean
@SessionScoped
public class NhanVienView extends AbstractView<NhanVien> {
	private static final long serialVersionUID = -3676403819952097516L;

	private List<LoaiNhanVien> loaiNVs = new ArrayList<>();

	@Override
	@PostConstruct
	protected void init() {
		super.init();
		loaiNVs = getDaoHelper().getDao(LoaiNhanVien.class).loadAll();
	}

	@ListenerMethod(acceptedEvents = { "saveOrUpdateLoaiNhanVien", "deleteLoaiNhanVien" })
	public void processEvents(EventData e, String eventName) {
		init();
	}

	public Long getSelectedLoaiNhanVienId() {
		if (getEditedEntity() != null && getEditedEntity().getLoai() != null) {
			return getEditedEntity().getLoai().getId();
		}
		return null;
	}

	public void setSelectedLoaiNhanVienId(Long selectedLoaiNhanVienId) {
		for (LoaiNhanVien lnv : loaiNVs) {
			if (selectedLoaiNhanVienId.equals(lnv.getId())) {
				getEditedEntity().setLoai(lnv);
				return;
			}
		}
		getEditedEntity().setLoai(null);
	}

	@Override
	protected String getDataModelBeanName() {
		return "nhanVienDataModel";
	}

	@Override
	protected String getDetailPanelViewId() {
		return "nhanVienDialogId";
	}

	public List<LoaiNhanVien> getLoaiNVs() {
		return loaiNVs;
	}

}
